////////////////////////////////////////////////////////////////////////////////
//
//  FLEX USER GROUP HOKURIKU
//  Copyright 2009 Flex User Group Hokuriku
//  All Rights Reserved.
// 
//  NOTICE: Flex User Group Hokuriku permits you to use, 
//  modify, and distribute this file 
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
package net.fxug.hokuriku.as3tnd.utils
{
    import flash.errors.IllegalOperationError;
    import flash.utils.getQualifiedClassName;
    
    import mx.logging.ILogger;
    import mx.logging.Log;

    /**
     * ロギング関連のユーティリティクラス
	 * TODO 外部からのロギングレベル、includeプロパティの制御
     * @author hikaruworld
     */
    public class LoggingUtil
    {
        /**
         * デフォルトコンストラクタ.
         * @throws IllegalOperationError インスタンス生成が行われた場合にthrowされます。
         */
		[Deprecated("インスタンス化禁止")]
        public function LoggingUtil()
        {
            throw new IllegalOperationError("このクラスのインスタンス化は許可されていません。");
        }

        /**
         * ロガーにクラスの完全名を付与して返す。
         * @param value クラス
         * @return クラスの完全名が設定されたILoggerクラス
         *
		 * @copy mx.logging.Log#getLogger()
		 * @see mx.logging.ILogger
         */
        public static function getLogger(value:*):ILogger
        {
            return Log.getLogger(getQualifiedLoggingClassName(value));
        }
        /**
         * getQualifiedClassNameと異なり、パッケージ名とクラス名の接続文字列が、<code>::</code>ではなく<code>.</code>で連結される。
         * @copy flash.utils.#getQualifiedClassName()
         */
        private static function getQualifiedLoggingClassName(value:*):String
        {
            return getQualifiedClassName(value).replace("::", ".");
        }
    }
}